#include "textwidget.h"

textWidget::textWidget(QWidget *parent) : QWidget(parent)
{
    setPalette(QPalette(QColor(251,251,251)));
    setAutoFillBackground(true);
    text<<tr("\r\n坐标显示：\r\n\r\n为了使定位准确，可以在光标附近显示光标所在位置的坐标。实际应用中，也可以在状态栏等其它位置显示坐标。\r\n\r\n\r\n演示：\r\n\r\n在演示区当中按下鼠标左键并移动鼠标，指针附近便会出现坐标值。");
    text<<tr("\r\n橡皮筋：\r\n\r\n橡皮筋是一种比喻，它是在用鼠标绘制直线、矩形、椭圆等形体时动态的显示中间过程，使得几何形体就象具有弹性一样。这样做，可以让用户直接看到形体的当前位置和形状。\r\n\r\n\r\n演示：\r\n\r\n本例子只演示了直线橡皮筋。在演示区中按下鼠标左键并移动，便能看见一条动态的直线。");
    text<<tr("\r\n移动：\r\n\r\n移动是改变对象位置的一种操作。通过实时的显示对象的当前位置，可以让用户准确的对对象进行定位。\r\n\r\n\r\n演示：\r\n\r\n将鼠标放在矩形上，指针形状将变成“移动”样式，这时按下左键并移动鼠标，矩形便会跟着移动。到了合适的位置松开左键，矩形的位置便被固定在了该处。");
    text<<tr("\r\n缩放：\r\n\r\n缩放是改变对象大小的一种操作。通过实时的显示对象的当前形状，可以让用户直观的看到对象形状的变换。\r\n\r\n\r\n演示：\r\n\r\n将鼠标放在矩形的八个控制框上，鼠标指针的形状会发生相应的变化，按下左键并移动鼠标，矩形的形状和大小便会随之变化。");
    text<<tr("\r\n旋转：\r\n\r\n旋转也是经常用到的一种操作。它需要指定一个“参考点”作为旋转中心，该旋转中心的位置可以改变，一般默认为形体的几何中心。\r\n\r\n\r\n演示：\r\n\r\n如右图，在九个小圆圈中，中间的一个是旋转中心（鼠标指针放上去是“移动”形状），可以用鼠标改变旋转中心的位置。然后用鼠标拖动其它八个小圆圈，便能让矩形绕着“中心”旋转。");
    text<<tr("\r\n引力场：\r\n\r\n引力场技术实际是通过模糊控制将某个范围内的点用一个特殊的点来代替，主要用于“细小”形体的选取，以及线与线间的链接等操作。\r\n\r\n\r\n演示：\r\n\r\n本例子演示的是一条线段周围的引力场，右图中的蓝色哑铃区域表示引力场，实际中是不显示出来的。按下鼠标左键并移动鼠标，演示区中会出现一条直线，当鼠标指针位于蓝色区域中时，直线的活动端便会自动吸附到线段上。这实际上演示了两条线段的连接技术。");
    text<<tr("\r\n定向：\r\n\r\n通过定向技术，可以绘制特殊方向的直线，如水平方向、垂直方向、斜45度等，这为工程制图中的绘线等带来了方便。\r\n\r\n\r\n演示：\r\n\r\n本例子约束直线的方向为：水平、垂直和斜45度。实际中，一般是在按住Shift键时为定向操作，不按Shift键时可画任意方向的直线。");
    text<<tr("\r\n网格：\r\n\r\n网格也是一种约束技术，它限制了形体仅能放置于特殊的点上，主要用于各种布局操作，如印刷线路板的绘制，棋盘上棋子的放置等。\r\n\r\n\r\n演示：\r\n\r\n使用鼠标可以移动图中圆圈的位置，但圆圈只能位于其中的网点上。");
    text<<tr("\r\n标尺：\r\n\r\n标尺是绘图中的一种辅助工具，它可以让用户定量的了解形体的位置和尺寸。\r\n\r\n\r\n演示：\r\n\r\n在演示区中按下鼠标左键并移动鼠标，标尺上会出现相应的指针显示当前的位置。");
    text<<tr("\r\n引导线：\r\n\r\n引导线也是一种辅助绘图工具，它一般与标尺配合使用，主要用于对形体进行精确定位。\r\n\r\n\r\n演示：\r\n\r\n在标尺上按下左键并往演示区移动鼠标便可以生成一条引导线，可以移动引导线改变其位置，如果要删除某条引导线只需将其拖到客户区以外即可。将演示区中的矩形拖动到引导线附近，矩形便被自动吸附到标尺上。");
}

void textWidget::paintEvent(QPaintEvent*)
{
    QPainter* pt = new QPainter(this);
    if(!isOperating)
        pt->drawText(QRectF(rect()),Qt::TextWrapAnywhere,tr("\r\n交互技术演示\r\n\r\n本例程演示了实际中常用的一些交互技术，主要模仿了Flash和PhotoShop中的相似操作，用户可以参考这些应用软件，看看其实际效果。"));
    else
        pt->drawText(QRectF(rect()),Qt::TextWrapAnywhere,text[currentShow]);
}

void textWidget::setcurrentShow(int cur)
{
    currentShow=cur;
    update();
}

void textWidget::startOperat()
{
   isOperating=true;
   update();
}
